Ingeniería Biomédica
2026-01-27
Una imagen continua \(f(x,y)\) se discretiza en \(I[m,n]\) mediante:
import numpy as np
import matplotlib.pyplot as plt
from skimage import data, img_as_float, color
def simulate_quantization(image, bits):
"""
Simula el efecto de reducir la profundidad de bits.
"""
levels = 2**bits
return np.round(image * (levels - 1)) / (levels - 1)
# Cargamos una imagen de prueba y la normalizamos
image = img_as_float(data.camera())
# Simulamos diferentes profundidades
q_8bit = simulate_quantization(image, 8)
q_4bit = simulate_quantization(image, 4)
q_2bit = simulate_quantization(image, 2)
fig, axes = plt.subplots(1, 3, figsize=(18, 6))
axes[0].imshow(q_8bit, cmap="gray")
axes[0].set_title("Resolución Estándar (8-bit)")
axes[1].imshow(q_4bit, cmap="gray")
axes[1].set_title("Cuantización 4-bit (16 niveles)")
axes[2].imshow(q_2bit, cmap="gray")
axes[2].set_title("Cuantización 2-bit (4 niveles)")
for ax in axes:
ax.axis("off")
plt.tight_layout()
plt.show()El ruido es un proceso estocástico dependiente de la física de adquisición:
::: {#cell-Poisson Noise .cell execution_count=3}
:::
\[SNR = \frac{\mu_{signal}}{\sigma_{signal}}\]
\[CNR = \frac{\mu_{signal} - \mu_{background}}{\sqrt{\sigma_{signal}^2 + \sigma_{background}^2}}\]
Para que una patología sea detectable, debe superar el umbral de ruido:
Contrast-to-Noise Ratio (CNR): \[CNR = \frac{|\mu_{tumor} - \mu_{sano}|}{\sqrt{\sigma_{tumor}^2 + \sigma_{sano}^2}}\]
Métricas de Calidad:
SNR: 1.4366
CNR: 1.4366
La resolución no es solo el tamaño de la matriz, es una propiedad dinámica.
Dado que no existen “puntos perfectos”, se utiliza el borde de una placa de plomo: